$(document).ready(function() {
    verifyLogin();
    atualizaGrid();

//    $("#filtrar").keyup(function() {
//        var index = $(this).parent().index();
//        var nth = "#tableClientes td:nth-child(" + (index + 1).toString() + ")";
//        
//        var valor = $(this).val().toUpperCase();
//        $("#tableClientes tbody tr").show();
//        $(nth).each(function() {
//            if ($(this).text().toUpperCase().indexOf(valor) < 0) {
//                $(this).parent().hide();
//            }
//        });
//    });
//
//    $("#filtrar").blur(function() {
//        $(this).val("");
//    });
});


$("#filtrar").keyup(function(event) {
    if (event.keyCode === 13) {
        atualizaGrid();
    }
});


$('#btnNovo').click(function() {
    if ($("#inputId").val() !== "" || $("#inputIdJ").val() !== "") {
        $("#inputId").val("");
        $("#inputIdUsuario").val("");
        $("#inputIdJ").val("");
        $("#inputIdUsuarioJ").val("");
    }
    $('#radioModalFisicaJuridica').modal('show');
    //TODO implemetar voltar para tab inicial
    //Limpa marcação da caixa de texto
    $('#inputNome').removeClass("alert-danger");
    $('#inputNomeJ').removeClass("alert-danger");
    //Limpa mensagem de campo requerido
    $("#errorEmpty").hide();
    $("#errorEmptyJ").hide();
    //Limpa mensagem de erro da tela dos radios
    $("#errorRadioEmpty").hide();
    //Limpar rádios
    $(":radio").each(function() {
        $(this).prop({checked: false});
    });
});

$('#confirmar').click(function() {
    //Se cliente física
    if ($("#radioFisica").is(":checked")) {
        $('#radioModalFisicaJuridica').modal('hide');
        $('#frmClientes')[0].reset();
        $("#errorServer").hide();
        $("#chkRecolocado").attr("checked", false);
        $('#novoModalFisica').modal('show');
        valor = $("#radioFisica").val();
    }
    //Se cliente jurídica
    else if ($("#radioJuridica").is(":checked")) {
        $('#radioModalFisicaJuridica').modal('hide');
        $('#frmClientesJ')[0].reset();
        $("#errorServerJ").hide();
        $('#novoModalJuridica').modal('show');
        valor = $("#radioJuridica").val();
    }
    else if ($("#radioJuridica").not(":checked"))
        $("#errorRadioEmpty").show();
});

$('#btnBuscar').click(function() {
    atualizaGrid();
    //$("#selectFiltroTipoCliente").val("0");
});

$('#salvar').click(function() {

    var valido = true;
    if ($('#inputNome').val().length === 0)
    {
        valido = false;
        $('#inputNome').addClass('alert-danger');
    }
    else
        $('#inputNome').addClass('alert-danger');
    if ($("#chkRecolocado").is(":checked"))
        recolocado = true;
    else
        recolocado = false;

    if (valido)
    {
        travarFormulario();

        cliente = JSON.stringify({
            idCliente: $("#inputId").val(),
            idUsuario: $("#inputIdUsuario").val(),
            nome: $("#inputNome").val(),
            email: $("#inputEmail").val(),
            cpfCnpj: $("#inputCpfCnpj").val(),
            login: $("#inputLogin").val(),
            senha: $("#inputSenha").val(),
            rua: $("#inputRua").val(),
            numero: $("#inputNumero").val(),
            complemento: $("#inputComplemento").val(),
            bairro: $("#inputBairro").val(),
            cep: $("#inputCep").val(),
            uf: $("#selectUf").val(),
            cidade: $("#inputCidade").val(),
            telefone: $("#inputTelefone").val(),
            telefoneAlternativo: $("#inputTelefoneAlternativo").val(),
            emailAlternativo: $("#inputEmailAlternativo").val(),
            celular: $("#inputCelular").val(),
            operadora: $("#selectOperadora").val(),
            celularAlternativo: $("#inputCelularAlternativo").val(),
            operadoraFoneAlternativo: $("#selectOperadoraFoneAlternativo").val(),
            observacao: $("#inputObservacao").val(),
            dataNascAbertura: $("#inputDataNascAbertura").val(),
            rgInscrEst: $("#inputRgInscrEst").val(),
            profissaoAreaAtuacao: $("#inputProfissaoAreaAtuacao").val(),
            empresa: $("#inputEmpresa").val(),
            sexo: $("#selectSexo").val(),
            tipoPessoa: valor,
            recolocado: recolocado
        });

        $.ajax({
            type: "post",
            url: rootUrl + "cliente/geraLoginSenha",
            dataType: "json",
            data: cliente,
            success: function() {
                destravarFormulario();
                $('#novoModalFisica').modal('hide');
                $("#frmClientes")[0].reset();
                atualizaGrid();
            },
            error: function(result) {
                destravarFormulario();
                $("#errorServer").html(getErrorMessage(result.responseText));
                $("#errorServer").show();
            }
        });
    }
    else
    {
        $("#errorEmpty").show();
        $("#errorServer").hide();
    }
});

$('#salvarJ').click(function() {

    var valido = true;
    if ($('#inputNomeJ').val().length === 0)
    {
        valido = false;
        $('#inputNomeJ').addClass('alert-danger');
    }
    else
        $('#inputNomeJ').removeClass('alert-danger');
    if (valido)
    {
        travarFormulario();

        cliente = JSON.stringify({
            idCliente: $("#inputIdJ").val(),
            idUsuario: $("#inputIdUsuarioJ").val(),
            nome: $("#inputNomeJ").val(),
            nomeFantasia: $("#inputNomeFantasiaJ").val(),
            email: $("#inputEmailJ").val(),
            cpfCnpj: $("#inputCpfCnpjJ").val(),
            login: $("#inputLoginJ").val(),
            senha: $("#inputSenhaJ").val(),
            rua: $("#inputRuaJ").val(),
            numero: $("#inputNumeroJ").val(),
            complemento: $("#inputComplementoJ").val(),
            bairro: $("#inputBairroJ").val(),
            cep: $("#inputCepJ").val(),
            uf: $("#selectUfJ").val(),
            cidade: $("#inputCidadeJ").val(),
            telefone: $("#inputTelefoneJ").val(),
            telefoneAlternativo: $("#inputTelefoneAlternativoJ").val(),
            emailAlternativo: $("#inputEmailAlternativoJ").val(),
            celular: $("#inputCelularJ").val(),
            operadora: $("#selectOperadoraJ").val(),
            celularAlternativo: $("#inputCelularAlternativoJ").val(),
            operadoraFoneAlternativo: $("#selectOperadoraFoneAlternativoJ").val(),
            observacao: $("#inputObservacaoJ").val(),
            dataNascAbertura: $("#inputDataNascAberturaJ").val(),
            rgInscrEst: $("#inputRgInscrEstJ").val(),
            profissaoAreaAtuacao: $("#inputProfissaoAreaAtuacaoJ").val(),
            sexo: $("#selectSexoJ").val(),
            tipoPessoa: valor
        });

        $.ajax({
            type: "post",
            url: rootUrl + "cliente/geraLoginSenha",
            dataType: "json",
            data: cliente,
            success: function(result) {
                destravarFormulario();
                $('#novoModalJuridica').modal('hide');
                $("#frmClientes")[0].reset();
                atualizaGrid();
            },
            error: function(result) {
                destravarFormulario();
                $("#errorServerJ").html(getErrorMessage(result.responseText));
                $("#errorServerJ").show();

            }

        });
    }
    else
    {
        $("#errorEmptyJ").show();
        $("#errorServerJ").hide();
    }

});

function travarFormulario()
{
    $("#errorEmpty").hide();
    $("#errorEmptyJ").hide();
    $("form").hide();
    $("#saveMessage").show();
    $("#saveMessageJ").show();
    $("#salvar").addClass("disabled");
    $("#salvarJ").addClass("disabled");
    $("#clearForm").addClass("disabled");
}

function destravarFormulario()
{
    $("#errorEmpty").hide();
    $("#errorEmptyJ").hide();
    $("#errorServer").hide();
    $("#errorServerJ").hide();
    $("form").show();
    $("#saveMessage").hide();
    $("#saveMessageJ").hide();
    $("#salvar").removeClass("disabled");
    $("#salvarJ").removeClass("disabled");
    $("#clearForm").removeClass("disabled");
}

function atualizaGrid() {

    $("#tableClientes").find("tbody tr").remove();
    $("#tableClientes").find("tbody").append('<tr><td colspan=10><div class="alert alert-info"><img src="img/ajax-loader.gif"> Carregando...</div></td></tr>');

    filtro = "";
    if ($("#filtrar").val())
        filtro = "/" + $("#filtrar").val();
    $.ajax({
        type: "get",
        url: rootUrl + "cliente/listAll" + filtro,
        dataType: "json",
        success: function(data) {
            $("#tableClientes").find("tbody tr").remove();
            data.result.forEach(function(cliente) {
                row = "<tr>"
                        + "<td>" + cliente.nome.substring(0, 45)
                        + "</td><td>" + cliente.nomeFantasia
                        + "</td><td>" + cliente.celular
                        + "</td><td>" + cliente.telefone
                        + "</td class='text-right'><td class='text-center'> <a class='btn btn-info btn-xs' href='#' id='edit' data-id='" + cliente.id + "'><span class='glyphicon glyphicon-edit'></span> Editar</a> <a href='#' class='btn btn-danger btn-xs' data-idUsuario='" + cliente.idUsuario + "' id='delete' data-id='" + cliente.id + "' data-nome='" + cliente.nome + "'><span class='glyphicon glyphicon-remove'></span> Deletar</a>"
                        + "</td></tr>";
                $("#tableClientes> tbody:last").append(row);
            });
        }
    });
}

//$("#selectFiltroTipoCliente").change(function() {
//    tipoCliente = "";
//    if ($("#selectFiltroTipoCliente").val())
//        tipoCliente = "/" + $("#selectFiltroTipoCliente").val();
//    if (tipoCliente) {
//        listClienteTipo(tipoCliente);
//    }
//});
//function listClienteTipo(tipoCliente)
//{
//    $("#tableClientes").find("tbody tr").remove();
//    $("#tableClientes").find("tbody").append('<tr><td colspan=10><div class="alert alert-success"><img src="img/ajax-loader.gif">Carregando...</div></td></tr>');
//
//    $.ajax({
//        type: "get",
//        url: rootUrl + "cliente/listClienteTipo" + tipoCliente,
//        dataType: "json",
//        success: function(data) {
//            $("#tableClientes").find("tbody tr").remove();
//            data.result.forEach(function(cliente) {
//                row = "<tr>"
//                        + "<td><span style='color:#000000'>" + cliente.nome + "</span>"
//                        + "</td><td>" + cliente.celular
//                        + "</td><td>" + cliente.telefone
//                        + "</td class='text-right'><td> <a id='edit'class='btn btn-info btn-xs' href='#' data-id='" + cliente.id + "' ><i class='icon-edit icon-white'></i></a> <a id='delete' href='#' class='btn btn-danger btn-xs' data-idUsuario='" + cliente.idUsuario + "' data-id='" + cliente.id + "' data-nome='" + cliente.nome + "'><i class='icon-remove icon-white'></i></a>"
//                        + "</td></tr>";
//                $("#tableClientes > tbody:last").append(row);
//            });
//        }
//    });
//}

$("#delete").live("click", function() {
    id = $(this).attr("data-id");
    idUsuario = $(this).attr("data-idUsuario");
    nome = $(this).attr("data-nome");
    $('#lblClienteDelete').text(nome);
    //row = $(this);

    $("#confirmDeleteModal").modal("show");
    $("#btnConfirmar").click(function() {
        $("#deleteMessage").show();
        $.ajax({
            type: "post",
            url: rootUrl + "cliente/delete",
            dataType: "json",
            data: JSON.stringify({id: id, idUsuario: idUsuario}),
            success: function() {
//                row.parent().parent().parent().fadeTo(400, 0, function() {
//                    row.parent().parent().parent().remove();
//                });
                $("#deleteMessage").hide();
                $("#confirmDeleteModal").modal("hide");
                atualizaGrid();
            },
            error: function() {
                //todo
            }
        });
    });

});

$("#edit").live("click", function() {

    id = $(this).attr("data-id");

    $("#errorServer").hide();
    $("#errorEmpty").hide();
    $("#errorServerJ").hide();
    $("#errorEmptyJ").hide();
    //Limpa marcação da caixa de texto
    $('#inputNome').parents("div").removeClass("error");
    $('#inputNomeJ').parents("div").removeClass("error");
    //Limpa mensagem de campo requerido
    $("#errorEmpty").hide();
    $("#errorEmptyJ").hide();
    $('#frmClientes')[0].reset();

    $.ajax({
        type: "get",
        url: rootUrl + "cliente/list/" + id,
        dataType: "json",
        success: function(data) {

            cliente = data.result;
            valor = cliente.tipoPessoa;
            if (valor == "f") {
                //Fisica
                $("#inputId").val(cliente.id);
                $("#inputIdUsuario").val(cliente.idUsuario);
                $("#inputNome").val(cliente.nome);
                $("#inputEmail").val(cliente.email);
                $("#inputCpfCnpj").val(cliente.cpfCnpj);
                $("#inputLogin").val(cliente.login);
                $("#inputSenha").val(cliente.senha);
                $("#inputRua").val(cliente.rua);
                $("#inputNumero").val(cliente.numero);
                $("#inputComplemento").val(cliente.complemento);
                $("#inputBairro").val(cliente.bairro);
                $("#inputCep").val(cliente.cep);
                $("#selectUf").val(cliente.uf);
                $("#inputCidade").val(cliente.cidade);
                $("#inputTelefone").val(cliente.telefone);
                $("#inputTelefoneAlternativo").val(cliente.telefoneAlternativo);
                $("#inputEmailAlternativo").val(cliente.emailAlternativo);
                $("#inputCelular").val(cliente.celular);
                $("#inputOperadora").val(cliente.operadora);
                $("#inputCelularAlternativo").val(cliente.celularAlternativo);
                $("#inputOperadoraFoneAlternativo").val(cliente.operadoraFoneAlternativo);
                $("#inputObservacao").val(cliente.observacao);
                $("#inputDataNascAbertura").val(cliente.dataNascAbertura);
                $("#inputRgInscrEst").val(cliente.rgInscrEst);
                $("#inputProfissaoAreaAtuacao").val(cliente.profissaoAreaAtuacao);
                $("#inputEmpresa").val(cliente.empresa);
                $("#selectSexo").val(cliente.sexo);

                if (cliente.recolocado == 0)
                    recolocado = false;
                else
                    recolocado = true;
                $("#chkRecolocado").attr("checked", recolocado);
                $("#novoModalFisica").modal("show");
            }
            else if (valor == "j") {
                //Juridica
                $("#inputIdJ").val(cliente.id);
                $("#inputIdUsuarioJ").val(cliente.idUsuario);
                $("#inputNomeJ").val(cliente.nome);
                $("#inputNomeFantasiaJ").val(cliente.nomeFantasia);
                $("#inputEmailJ").val(cliente.email);
                $("#inputCpfCnpjJ").val(cliente.cpfCnpj);
                $("#inputLoginJ").val(cliente.login);
                $("#inputSenhaJ").val(cliente.senha);
                $("#inputRuaJ").val(cliente.rua);
                $("#inputNumeroJ").val(cliente.numero);
                $("#inputComplementoJ").val(cliente.complemento);
                $("#inputBairroJ").val(cliente.bairro);
                $("#inputCepJ").val(cliente.cep);
                $("#selectUfJ").val(cliente.uf);
                $("#inputCidadeJ").val(cliente.cidade);
                $("#inputTelefoneJ").val(cliente.telefone);
                $("#inputTelefoneAlternativoJ").val(cliente.telefoneAlternativo);
                $("#inputEmailAlternativoJ").val(cliente.emailAlternativo);
                $("#inputCelularJ").val(cliente.celular);
                $("#selectOperadoraJ").val(cliente.operadora);
                $("#inputCelularAlternativoJ").val(cliente.celularAlternativo);
                $("#selectOperadoraFoneAlternativoJ").val(cliente.operadoraFoneAlternativo);
                $("#inputObservacaoJ").val(cliente.observacao);
                $("#inputDataNascAberturaJ").val(cliente.dataNascAbertura);
                $("#inputRgInscrEstJ").val(cliente.rgInscrEst);
                $("#inputProfissaoAreaAtuacaoJ").val(cliente.profissaoAreaAtuacao);
                $("#inputSexoJ").val(cliente.sexo);
                $("#novoModalJuridica").modal("show");
            }
        }
    });
});    